package apis.amapv2.com.io.assets;

import android.content.res.AssetManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.util.Xml;
import org.xmlpull.v1.XmlPullParser;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import apis.amapv2.com.io.R;
import apis.amapv2.com.io.bean.Book;

public class AssetsTest1Activity extends AppCompatActivity {

    private static final String TAG = AssetsTest1Activity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_assets_test1);

        ArrayList<Book> books = parseData();
        if (books != null) {
            for (int i = 0; i < books.size(); i++) {
                Book book = books.get(i);
                Log.e(TAG, book.getTitle() + "-" + book.getAuthor() + "-" + book.getPrice());
            }
        }
    }

    private ArrayList<Book> parseData() {
        ArrayList<Book> books = null;
        Book book = null;
        InputStream is = null;
        try {
            AssetManager assetManager = this.getAssets();
            XmlPullParser parser = Xml.newPullParser();
            is = assetManager.open("book_list.xml", AssetManager.ACCESS_STREAMING);//按顺序读取
            parser.setInput(is, "utf-8");
            //开始解析
            int type = parser.getEventType();//解析的类型,光标在文件的开头
            while (type != XmlPullParser.END_DOCUMENT) {//如果当前的类型不是文档的结束，就继续解析
                Log.e("type",type+"");
                if (type == XmlPullParser.START_DOCUMENT) {//如果解析到了START_DOCUMENT(文档开始标记:<?xml version="1.0" encoding="UTF-8"?>)
                    books = new ArrayList<>();//创建Arraylist
                } else if (type == XmlPullParser.START_TAG) {//说明解析到了START_TAG(开始标签) <>
                    if ("书".equals(parser.getName())) {//如果开始标签的内容是 书
                        book = new Book();//创建一个book对象 用来保存解析出来的内容
                    } else if ("书名".equals(parser.getName())) {//如果开始标签的内容是 书名
                        book.setTitle(parser.nextText());//调用当前节点的nextText()方法 获取<书名>标签中的内容保存到book对象中
                    } else if ("作者".equals(parser.getName())) {//如果开始标签的内容是 作者
                        book.setAuthor(parser.nextText());//调用当前节点的nextText()方法 获取<作者>标签中的内容保存到book对象中
                    } else if ("售价".contains(parser.getName())) {//如果开始标签的内容是 售价
                        book.setPrice(parser.nextText());//调用当前节点的nextText()方法 获取<售价>标签中的内容保存到book对象中
                    }
                } else if (type == XmlPullParser.END_TAG) {//说明解析到了</>结束标签
                    if ("书".equals(parser.getName())) {//如果结束标签的内容是书
                        books.add(book);//说明一本书已经解析完了 把当前这本书保存到books集合中
                        book = null;//把book对象置空用来保存下一个对象
                    }
                }
                type = parser.next();//解析下一个节点，将光标移动到下个节点处
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return books;
    }

}
